package clasesPrincipales;
import java.util.Date;

import org.uqbar.commons.model.Entity;


@SuppressWarnings("serial")
public class Evento extends Entity {
	public static final String FECHAINICIO = "fechaInicio";
	public static final String FECHAFIN = "fechaFin";
	public static final String DESCRIPCION = "descripcion";
	public static final String ESIMPORTANTE = "esImportante";
	public static final String CANTIDADDEHORAS = "cantidadDeHoras";
	
	//variables
	private Date fechaInicio; //fecha y hora
	private Date fechaFin;    //fecha y hora //se asume una hora posterior a la fecha inicial
	private String descripcion;
	private Boolean esImportante;//se asume falsa
	private Integer cantidadDeHoras; //se puede calcular en caso de no recibirla
	
	// ---------------------------------------------------------
	//constructor
	
		//vacio
	public Evento(){}
	
		//sin 'esImportante'
	public Evento(String fechaInicio, String fechaFin, String descripcion,
			Integer cantidadDeHoras) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin = new MyDate(fechaFin).getFechaYHora();
		this.descripcion = descripcion;
		this.esImportante = false; //asumo
		this.cantidadDeHoras = cantidadDeHoras;
	}
	
	//sin 'canthoras'
	public Evento(String fechaInicio, String fechaFin, String descripcion,
			Boolean importante) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin = new MyDate(fechaFin).getFechaYHora();
		this.descripcion = descripcion;
		this.esImportante = importante; 
		this.cantidadDeHoras = this.calcularCantidadDeHoras(); //lo calculo
	}
	
	//sin 'fecha fin'
	public Evento(String fechaInicio, String descripcion,
			Boolean esImportante, Integer cantidadDeHoras) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin =  new Date(fechaFin.getTime() + 36000);//asumo
		this.descripcion = descripcion;
		this.esImportante = esImportante;
		this.cantidadDeHoras = cantidadDeHoras;
	}
	
		//sin 'esImportante'ni 'fechafin'
	public Evento(String fechaInicio, String descripcion,
			Integer cantidadDeHoras) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin = new Date(fechaFin.getTime() + 36000);//asumo
		this.descripcion = descripcion;
		this.esImportante = false;//asumo
		this.cantidadDeHoras = cantidadDeHoras;
	}
	
		//sin 'esImportante'ni cantidad de horas
	public Evento(String fechaInicio, String fechaFin, String descripcion) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin = new MyDate(fechaFin).getFechaYHora();
		this.descripcion = descripcion;
		this.esImportante = false; //asumo
		this.cantidadDeHoras = this.calcularCantidadDeHoras();//calculo
	}
	
		//sin 'esImportante'ni cantidad de horas ni fecha fin
	public Evento(String fechaInicio, String descripcion) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin = new Date(fechaFin.getTime());//asumo
		this.descripcion = descripcion;
		this.esImportante = false;//asumo
		this.cantidadDeHoras = this.calcularCantidadDeHoras();//calculo
	}

		//sin 'fechaFin' ni 'camtidad de horas'
	public Evento(String fechaInicio, String descripcion,
			Boolean esImportante) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin =  new Date(fechaFin.getTime() + 36000);//asumo
		this.descripcion = descripcion;
		this.esImportante = esImportante;
		this.cantidadDeHoras = this.calcularCantidadDeHoras();
	}
	
		//todos los campos
	public Evento(String fechaInicio, String fechaFin, String descripcion,
			Boolean esImportante, Integer cantidadDeHoras) {
		super();
		this.fechaInicio = new MyDate(fechaInicio).getFechaYHora();
		this.fechaFin = new MyDate(fechaFin).getFechaYHora();
		this.descripcion = descripcion;
		this.esImportante = esImportante;
		this.cantidadDeHoras = cantidadDeHoras;
	}
	
	// -----------------------------------------------

	//metodos
	
	public Integer calcularCantidadDeHoras(){
		int retorno= (int) (this.fechaFin.getTime()- this.fechaInicio.getTime());
		retorno = retorno*3600000;
		return retorno;
		
	}
	
	// -----------------------------------------------
	//Get&Set
	
	//fechainicio
	public Date getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		Date old = this.fechaInicio;
		this.fechaInicio = fechaInicio;
		this.firePropertyChange(FECHAINICIO, old, this.fechaInicio);
	}
	
	//fechafin
	public Date getFechaFin() {
		return fechaFin;
	}
	public void setFechaFin(Date fechaFin) {
		Date old = this.fechaFin;
		this.fechaFin = fechaFin;
		this.firePropertyChange(FECHAFIN, old, this.fechaFin);
	}
	
	//descripcion
	public String getDescripcion() {
		return this.descripcion;
	}
	public void setDescripcion(String descripcion) {
		String old = this.descripcion;
		this.descripcion = descripcion;
		this.firePropertyChange(DESCRIPCION, old, this.descripcion);
	}	
	
	//esimportante
	public Boolean getEsImportante() {
		return esImportante;
	}
	public void setEsImportante(Boolean esImportante) {
		Boolean old = this.esImportante;
		this.esImportante = esImportante;
		this.firePropertyChange(ESIMPORTANTE, old, this.esImportante);
	}
	
	//cantidad de horas
	public Integer getCantidadDeHoras() {
		return cantidadDeHoras;
	}
	public void setCantidadDeHoras(Integer cantidadDeHoras) {
		Integer old = this.cantidadDeHoras;
		this.cantidadDeHoras = cantidadDeHoras;
		this.firePropertyChange(CANTIDADDEHORAS, old, this.cantidadDeHoras);
	}
	
	
}
